const requestBase = {
	index: '/api/tool/',
	login: '/api/customer/',
	upload:'/api/tool/',
	sysculture:'/api/sysculture/',
	sysagreement:'/api/sysagreement/',
	sysRecommend:'/api/sysRecommend/',
	goodstype:'/api/goodstype/',
	consumer:'/api/consumer/',
	orderGoods:'/api/orderGoods/',
	sysRotation:'/api/sysRotation/',
	withdrawal:'/api/withdrawal/'
}

const methods = {
	get: {},

	post: {
		//上传
		upload: [
			'fileUpLoad',//上传图片
		],
		//公司文化
		sysculture:[
			'cultureinfo',//公司文化展示
			'culturedetails',//公司文化详情
		],
		/* 协议 */
		sysagreement:[
			'agreementInfo',//协议政策
		],
		/* 物品推荐 */
		sysRecommend:[
			'recommendInfo',//推荐信息
			'recommendDetails',//推荐详情
		],
		/* 物品分类 */
		goodstype:[
			'findGoodByType',//物品分类查找详情
			'goodstypeinfo',//物品分类信息
		],
		/* 用户信息管理 */
		consumer:[
			'loginPhone',//用户登录
			'registerPhone',//用户注册
			'forgetPwd',//忘记密码,
			'updateConsumer',//修改用户昵称
			'updateImg',//修改用户头像
			'accountBalance',//用户账户余额
			'updatePwd',//修改密码,
			'updatePhone',//修改手机号
			'isBindingWX',//微信登录
		],
		/* 物品订单信息 */
		orderGoods:[
			'release',//我的发布,
			'relDel',// 我的发布----删除
			'determined',// 待确定
			'determineBtn',//待确定按钮
			'goodsList',//物品信息列表
			'goodInfo',// 物品详情
			'findGoods',//物品搜索
			'findOwner',//发布：寻找失主
			'reward',//发布：悬赏
			'completed',//已完成展示
			'losePay',//丢失者：立即支付
			'pickerReward',//拾物者：领取赏金
		],
		/* 轮播图信息 */
		sysRotation:[
			'rotationInfo',// 轮播图列表
			'rotationByid',//轮播图详情
		],
		/* 提现管理 */
		withdrawal:[
			'goWithdrawal',// 确认提现
			'withdrawalWay',//提现方式
			'bindingAlipay',//绑定支付宝
			'bindingWechat',//绑定微信
		],
		index: [
			'verificationCode',// 验证码
		],
		//登录接口
		login: [

		],
	}
}


/**
 * @param {obj} methods 请求方法配置对象
 * @param {obj} requestBase 基础请求头配置对象
 * @param {obj} 需要被挂载的Vue实例
 */
function initRequset(methods, requestBase, vm) {
	vm.$u.api = {}
	for (let method in methods) { //分类get 和 post 方法
		const category = methods[method] //category请求分类
		for (let requests in category) { //requests 每个分类中的具体请求模块
			const reqList = category[requests] //reqList 每个模块中的具体请求方法
			if(requests === 'upload'){
				reqList.forEach(item => {
					vm.$u.api[item] = vm.$u.baseUrl + requestBase[requests] + item
				})
				continue
			}
			reqList.forEach(value => {
				vm.$u.api[value] = (params = {}) => vm.$u[method](requestBase[requests] + value, params);
			})
		}
	}
}

const install = (Vue, vm) => {
	initRequset(methods, requestBase, vm)
}

export default {
	install
}
